package com.foreknow.example8;

import java.util.HashSet;
import java.util.Set;

/**
 * 4. 给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。
 *   找出那个只出现了一次的元素 
 *  例如：输入[2,2,1] 输出 1  输入[4,1,2,1,2] 输出4
 *
 *  思路：
 *  1. 创建一个Set集合
 *  2. 遍历数组nums,如果Set集合中不包含nums[i],就可以将nums[i]放到Set集合中
 *     Set集合中包含nums[i],就需要将set集合中的nums[i]删除，最后剩下的就是只出现一次的元素
 *
 */
public class Test2 {
    public int singerNum(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for(int i = 0;i<nums.length;i++) {
            if(set.contains(nums[i])) {
                set.remove(nums[i]);
            }else {
                set.add(nums[i]);
            }
        }

        for(int i = 0;i<nums.length;i++) {
            if(set.contains(nums[i])) {
                return nums[i];
            }
        }
        return -1;
    }
    public static void main(String[] args) {

    }
}
